// 有上下文类和状态类，上下文类暴露方法来改变状态。状态处理函数有个参数表示上下文，可以反过来改变上下文中的状态。